package com.haoze.nurseapp.service;

import com.haoze.common.response.Result;
import com.haoze.nurseapp.dto.Assessment.CommonTaskCirculationDTO;
import com.haoze.nurseapp.dto.PatientInHospitalDTO;
import com.haoze.nurseapp.dto.TableDTO;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;
import java.util.Map;

public interface PatientCirculationService {
    Result queryTampList(String modelName, String inpatNum,String circulationLogId);

    Result queryOperationTampList(String modelName, String inpatNum,String circulationLogId);

    Result queryTransferTampList(String inpatNum,String circulationLogId);

    Result saveAssessmentFileData(CommonTaskCirculationDTO emrFile);

    Result queryBedByWardDeptId(String wardDeptId);
    Result queryBedByWardDeptId2(String wardDeptId,String id,Integer page,Integer pageSize,String keyWords,String operationFlag);

    Result queryNurseLeaderByWardDeptId(String wardDeptId, String bedNo);

    //Result savePatientInfo(String inpatNum, String wardDeptId);
    Result savePatientInfo(Map<String, String> param);

    Result queryPatientCirculationDetailByInpatNum(String inpatNum);

    Result queryDepDoctorAndNursList(String depId,String id);
    Result queryDepDoctorAndNursList2(String depId,String id,Integer page,Integer pageSize,String keyWords);

    Result saveOperator(String inpatNum, String circulationTemplateId, String emrFileId,String circulationlLogId);

    Result patientGoOut(String inpatNum,String time,String reason);

    Result patientRegression(String inpatNum,String time);

    Result patientRotating(String inpatNum,String circulationLogId);

    Result rotatingHistory(String inpatNum,String circulationlLogId);

    Result cancleInHosp(String inpatNum,String circulationLogId);

    Result getPatientList(List<String> circulationType, String status, String endDate, String startDate, String keyWords, String inWardDeptId, String outWardDeptId,String wardDeptId);

    Result patientLeaveHospital(String inpatNum,String dischanargeModeName,String dischanargeModeCode,String medicalCategory,String medicalCategoryCode,String outDatetime,
                                String diagId,String circulationLogId,String stopDateTime,String babyStopDateTime);

    Result queryDeptByWardDeptId(String type, String contentId);
    Result queryDeptByWardDeptId2(String type, String contentId,String id,Integer page,Integer pageSize,String keyWords);

    Result patientOperation(String inpatNum, String operation,String remark,String circulationlLogId);

    Result patientTransferOut(String inpatNum,String transport,String wardDeptId,String circulationLogId,String transferOutDateTime,String stopDateTime,String babyStopDateTime);//转科转出
    Result patientTransferOutPc(String inpatNum,String circulationLogId,
                                String transferOutWardDeptId,String transferOutDeptId,
                                String transferInWardDeptId,String transferInDeptId,
                                String transferOutDateTime,
                                String stopDateTime,String babyStopDateTime);//转科转出



    Result getOptions(String dataId);
    Result patientTransferIn(String inpatNum,String transport,String bedNo,String doctorPersonId,String nurseId,String circulationLogId,String transferInDateTime);//转科转入

    Result getTransport();//转运下拉选

    Result patientCancelLeaveHospital(String inpatNum,String bedNo,String circulationLogId);

    Result outCanCancel(String inpatNum,String circulationLogId);//是否可取消

    Result patientTransferOutCancel(String inpatNum,String bedNo,String circulationLogId);//转科转出取消

    Result patientTransferInCancel(String inpatNum,String circulationLogId);//转科转入取消

    Result queryDischargeMode(String id);//获取出院方式

    Result queryMedicalCategory(String inpatNum);//获取医疗类别

    Result queryDischargeDiagnosis(String inpatNum);//获取出院诊断

    Result queryPatientFinishutHospByInpatNum(String inpatNum);//获取出院诊断

    Result queryNurseListByWardDeptId(String wardDeptId);//获取病区对应的所有医生
    Result queryNurseListByWardDeptId2(String wardDeptId,String id,Integer page,Integer pageSize,String keyWords);//获取病区对应的所有医生

    Result queryPatientOperationByCirculationLogId(String circulationLogId);//根据circulationLogId获取信息


    Result savePatientInfoInHosp(Map<String, Object> param);//入院选择的信息存储到mogodb中
    Result savePatientInfoInDept(Map<String, Object> param);//入院选择的信息存储到mogodb中

    Result patientScanWristBandCode(String qrCode,String wardDeptId,String startDate,String endDate);

    Result patientScanBedCode(String qrCode,String circulationlLogId);

    Result getCirculationType();

    Result queryCirculationLogList(Map<String, String> params);

    Result getPatientInfoTemp(String inpatNum,String circulationlLogId);

    Result queryWardDeptByDeptId(String deptId,String id,String keyWords);

    Result queryPatientInHospAssessmentSheet(String inpatNum);

    Result queryPatientPayOff(String inpatNum);

    Result queryEvaluationTime(Map<String, String> params);

    Result queryDailyAssessmentSheet(String modelName,String inpatNum,String circulationlLogId);

    Result outDiagnosis(String keyWord,Integer page,Integer pageSize,String diagId);

    Result queryAssessmentScale(String modelName,String inpatNum,String keyWords);

    //TableDTO getVteDetail(String inpatNum, String catalogId, String strTm, String endTm);

    Map<String,String> getPatientInfo(String inpatNum);

    Result updatePatientInfo(Map<String, String> params);

    Result queryWaitNewHospitalList(String wardDeptId,String allFlag,String keyWords,Integer page,Integer pageSize,String operationFlag);

    Result queryPatientInfo(String circulationLogId,String inpatNum,String operationFlag);

    Result queryDropDown(String dataVersionId,String selectValue,String dataValueId,String keyWords,Integer page,Integer pageSize);

    Result queryReligionList(String basicdatavalueId,String keyWords,Integer page,Integer pageSize);

    Result queryDiagnosisList(String diagId,String keyWords,Integer page,Integer pageSize);
    Result queryOperationList(String diagId,String keyWords,Integer page,Integer pageSize);

    Result saveNewHospitalList(PatientInHospitalDTO patientInHospitalEntity);
    Result saveTranferInDept(PatientInHospitalDTO patientInHospitalEntity);

    Result queryFinishNewHospitalList(String wardId,String bedNo,String operationFlag,String inpatNum,String healthNum);

    Result queryBedNoByWardDeptId(String wardId,String id,Integer page,Integer pageSize,String keyWords);
    Result queryDeptList(String id,Integer page,Integer pageSize,String keyWords);
    Result queryInDeptByInpatNum(String wardId,String inpatNum,String healthNum,String operationFlag);
    Result patientCheckLeaveHospital(String inpatNum,String operationFlag);

}
